// 权限类型转换工具：统一 Web/App 与 0/1 的互转

// 输入可为 'Web'|'App' 或 '0'|'1' 或逗号拼接字符串，输出统一编码字符串 '0'/'1' 或 '0,1'
export const toAuthorityCodes = (input: string[] | string | null | undefined): string => {
  if (!input) return "";
  let items: string[] = [];
  if (Array.isArray(input)) {
    items = input.flatMap((v) => String(v).split(',').map((s) => s.trim()).filter(Boolean));
  } else {
    items = String(input).split(',').map((s) => s.trim()).filter(Boolean);
  }
  const mapped = items.map((v) => (v === 'Web' || v === '0' ? '0' : v === 'App' || v === '1' ? '1' : v));
  return Array.from(new Set(mapped)).sort().join(',');
};

// 输入可为 '0'|'1' 或 '0,1'，输出统一文本数组 ['Web','App']
export const toAuthorityTexts = (input: string[] | string | null | undefined): string[] => {
  if (!input) return [];
  let items: string[] = [];
  if (Array.isArray(input)) {
    items = input.flatMap((v) => String(v).split(',').map((s) => s.trim()).filter(Boolean));
  } else {
    items = String(input).split(',').map((s) => s.trim()).filter(Boolean);
  }
  const mapped = items
    .map((v) => (v === '0' || v === 'Web' ? 'Web' : v === '1' || v === 'App' ? 'App' : ''))
    .filter(Boolean) as string[];
  return Array.from(new Set(mapped));
};


